package ar.com.ctrln.persistence.model.factura;

import java.util.Date;
import java.util.Set;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Transient;

import ar.com.ctrln.persistence.model.cliente.Cliente;

@Entity
@Table(name = "FACTURA")
public class Factura {

	@Transient
	public static final String ESTADO_IMPAGA = "No Abonada";

	@Transient
	public static final String ESTADO_PAGA = "Abonada";

	@Id
	@GeneratedValue
	@Column(name = "id_factura")
	private long id;

	@Column
	private int numeroFactura;

	@Column
	private Date fecha;

	@Column
	private Date fechaAlta;

	@OneToMany(fetch = FetchType.EAGER, cascade = { javax.persistence.CascadeType.ALL })
	@JoinColumn(name = "id_factura")
	private Set<DetalleFactura> detalles;

	@ManyToOne
	@JoinColumn(name = "id_organizacion")
	private Cliente cliente;

	@Column
	private double subTotal;

	@Column
	private double impuesto;

	@Column
	private double total;

	@Column
	private String estado;

	public long getId() {
		return id;
	}

	public void setId(long id) {
		this.id = id;
	}

	public int getNumeroFactura() {
		return numeroFactura;
	}

	public void setNumeroFactura(int numeroFactura) {
		this.numeroFactura = numeroFactura;
	}

	public Date getFecha() {
		return fecha;
	}

	public void setFecha(Date fecha) {
		this.fecha = fecha;
	}

	public Date getFechaAlta() {
		return fechaAlta;
	}

	public void setFechaAlta(Date fechaAlta) {
		this.fechaAlta = fechaAlta;
	}

	public Set<DetalleFactura> getDetalles() {
		return detalles;
	}

	public void setDetalles(Set<DetalleFactura> detalles) {
		this.detalles = detalles;
	}

	public Cliente getCliente() {
		return cliente;
	}

	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}

	public double getSubTotal() {
		return subTotal;
	}

	public void setSubTotal(double subTotal) {
		this.subTotal = subTotal;
	}

	public double getImpuesto() {
		return impuesto;
	}

	public void setImpuesto(double impuesto) {
		this.impuesto = impuesto;
	}

	public double getTotal() {
		return total;
	}

	public void setTotal(double total) {
		this.total = total;
	}

	public String getEstado() {
		return estado;
	}

	public void setEstado(String estado) {
		this.estado = estado;
	}

}
